#pragma

#include"Common.h"
//线程缓存（ThreadCache）
//让每个线程优先从自己的本地缓存中分配 / 释放内存，
//减少多线程竞争，提高效率
class ThreadCache
{
public:
	// 申请和释放内存对象
	void* Allocate(size_t size);
	void Deallocate(void* ptr, size_t size);

	// 从中心缓存获取对象
	void* FetchFromCentralCache(size_t index, size_t size);
	// 释放对象时，链表过长时，回收内存回到中心缓存
	void ListTooLong(FreeList& list, size_t size);
private:
	FreeList _freeLists[NFREELIST];
};

// TLS thread local storage
static _declspec(thread) ThreadCache* pTLSThreadCache = nullptr;
//_declspec(thread)：这是 Windows 平台的关键字，用于声明线程局部存储（TLS） 变量。
//意思是 pTLSThreadCache 这个指针在每个线程中都有独立的副本，互不干扰。
//作用：确保每个线程只能访问自己的 ThreadCache 实例，
//避免多线程同时操作同一个缓存导致的锁开销（比如加锁、解锁的耗时）。